//
//  UMWebClient.h
//  HKSUMEyeCloudLIb
//
//  Created by apple on 16/5/5.
//
//

#import "UMWebDef.h"
@class TreeListItem;
//回调
@protocol UMWebClientDelegate<NSObject>

- (void)umWebClient:(id)tager status:(UM_WEB_API_ERROR_ID)aStatus msgId:(UM_WEB_API_WS_HEAD_I_ID)aMsgId param:(id)aParam;

@end


///#begin zh-cn
/**
 *  @brief  web通讯协议句柄
 *  @since  v2.4.10.1
 */
///#end
///#begin en
///#end
@interface UMWebClient : NSObject

@property(nonatomic, copy) NSString     *sSession;

@property(nonatomic, copy) NSString     *sHost;

@property(nonatomic, copy) NSString     *sAuthHost;
@property(nonatomic, copy) NSString     *sUstHost;

@property(nonatomic, assign) int        iAuthPort;
@property(nonatomic, assign) int        iUstPort;

@property(nonatomic, assign) int        iPort;

@property(nonatomic, copy) NSString     *sUserId;
@property(nonatomic, copy) NSString     *sIp;

@property(nonatomic, copy) NSString     *sUserPwd;

@property(nonatomic, copy) NSString     *sClientId;
@property(nonatomic, copy) NSString     *sCustomFlag;
@property(nonatomic, copy) NSString     *sClientVer;
@property(nonatomic, copy) NSString     *sClientToken;

@property(nonatomic, assign) id         delegate;

@property(nonatomic, assign) UM_WEB_API_WS_LANG_TYPE    iLangId;

@property(nonatomic, assign) UM_WEB_API_WS_HEAD_I_ID    iMsgId;






///#begin zh-cn
/**
 *  @brief  获取当前协议类型的句柄
 *
 *  @param  aWebAPIType[UM_WEB_API_TYPE]    协议类型
 *  @return [UMWebClient]                  协议句柄
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
+ (UMWebClient *)shareClient:(UM_WEB_API_TYPE)aWebAPIType;


///#begin zh-cn
/**
 *  @brief  设置websocked连接的服务器信息
 *
 *  @param  aHost[NSString]     服务器地址
 *  @param  aPort[NSString]     服务器端口
 *  @param  aClientId[NSString] 客户端唯一标识码
 *  @param  aLangId[UM_WEB_API_WS_LANG_TYPE]    客户端语言
 *  @param  aCustomFlag[NSString]               客户端定制标识码
 *  @param  aClientVer[NSString]                客户端版本号
 *  @param  aToken[NSString]                    客户端token
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)setupHost:(NSString *)aHost
             port:(int)aPort
         clientId:(NSString *)aClientId
           langId:(UM_WEB_API_WS_LANG_TYPE)aLangId
       customFlag:(NSString *)aCustomFlag
        clientVer:(NSString *)aClientVer
            token:(NSString *)aToken;


///#begin zh-cn
/**
 *  @brief  查询最优认证、ust服务器地址
 *
 *  @param  aUserId[NSString]   查询当前用户名所在的认证服务器地址，为空的时候则查询当前网络所在地最近地址
 *  @param  aIp[NSString]       查询当前ip最近的认证服务器地址，为空的时候则查询当前网络所在地最近地址
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (UM_WEB_API_ERROR_ID)authUstServerAtUserId:(NSString *)aUserId
                                          ip:(NSString *)aIp
                                bIfLocalSave:(BOOL)bIfLocalSave;

///#begin zh-cn
/**
 *  @brief  获取服务器列表
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)authUstServerList;

///#begin zh-cn
/**
 *  @brief  登录认证服务器
 *
 *  @param  aUserId[NSString]                       用户ID，必填
 *  @param  aPassword[NSString]                     用户密码，必填
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)loginServerAtUserId:(NSString *)aUserId
                   password:(NSString *)aPassword;

///#begin zh-cn
/**
 *  @brief  注销服务器
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)logoutServer:(BOOL)bIfDisablePush;


///#begin zh-cn
/**
 *  @brief  注册账号
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)registeredUser:(NSString *)aUserId
              password:(NSString *)aPassword
                 email:(NSString *)aEMail
              userName:(NSString *)aUserName
                 phone:(NSString *)aPhone
                cardId:(NSString *)aCardId;

///#begin zh-cn
/**
 *  @brief  修改用户密码
 *
 *  @param  aOldPassword[NSString]  旧密码，必填
 *  @param  aNewPassword[NSString]  新密码，必填
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)modifyUserPassword:(NSString *)aOldPassword
               newPassword:(NSString *)aNewPassword;


///#begin zh-cn
/**
 *  @brief  找回密码
 *
 *  @param  aUserId[NSString]   用户名
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)resetUserPassword:(NSString *)aUserId;

///#begin zh-cn
/**
 *  @brief  获取节点列表
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)nodeList;

///#begin zh-cn
/**
 *  @brief  添加节点
 *
 *  @param  aNode[TreeListItem] 节点信息
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)addNodeInfo:(TreeListItem *)aNode;

///#begin zh-cn
/**
 *  @brief  修改节点
 *
 *  @param  aNode[TreeListItem] 节点信息
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)modifyNodeInfo:(TreeListItem *)aNode;

///#begin zh-cn
/**
 *  @brief  删除节点
 *
 *  @param  aNode[TreeListItem] 节点信息
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)deleteNodeInfo:(int)aNodeId;

///#begin zh-cn
/**
 *  @brief  查询报警记录，建议使用分页功能，因为在数据量大的情况下，查询所有数据会比较慢
 *
 *  @param  aPageIndex[int]                     分页功能，可选，指定从第几页开始，起始值：1，0为不分页
 *  @param  aPageSize[int]                      分页功能，可选，每页返回的记录数，0为不限制
 *  @param  aDevId[NSString]                    设备ID，可选
 *  @param  aAlarmEvents[NSString]              报警事件，可选
 *  @param  aStatTime[NSString]                 开始时间，可选
 *  @param  aEndTime[NSString]                  结束时间，可选
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)alarmLogs:(int)aPageIndex
             size:(int)aPageSize
            devId:(NSString *)aDevId
      alarmEvents:(NSArray *)aAlarmEvents
        startTime:(NSString *)aStartTime
          endTime:(NSString *)aEndTime;

///#begin zh-cn
/**
 *  @brief  查询报警记录
 *
 *  @param  aAlarmId[NSString]                  报警ID,可选
 *  @param  aDevId[NSString]                    设备ID，可选
 *  @param  aAlarmEvents[NSString]              报警事件，可选
 *  @param  aStatTime[NSString]                 开始时间，可选
 *  @param  aEndTime[NSString]                  结束时间，可选
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)deleteAlarmLogs:(NSString *)aAlarmId
                  devId:(NSString *)aDevId
            alarmEvents:(NSArray *)aAlarmEvents
              startTime:(NSString *)aStartTime
                endTime:(NSString *)aEndTime;

///#begin zh-cn
/**
 *  @brief  查询设备布防、通知信息
 *
 *  @param  aDevId[NSString]    设备ID
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)deviceAlarmInfo:(NSString *)aDevId;


///#begin zh-cn
/**
 *  @brief  查询用户推送信息
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)userPushInfo;

///#begin zh-cn
/**
 *  @brief  修改用户推送信息
 *  @param  aIfEnable[BOOL]              是否开启该账号的推送
 *  @param  aIfDisableOtherUsers[BOOL]   是否禁止当前手机本APP的其他账号推送
 *  @param  aUnReadCount[BOOL]           把推送的未读记录数设置为指定的值
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)modifyUserPushInfo:(BOOL)aIfEnable disableOtherUsers:(BOOL)aIfDisableOtherUsers unReadCount:(int)aUnReadCount;

///#begin zh-cn
/**
 *  @brief  查询客户端信息（比如版本信息）
 *
 *  @since  v2.4.10.0
 */
///#end
///#begin en
///#end
- (void)clientInfo;


/**  @brief  幼儿园公告 */
- (void)kindergartenBulletins:(int)aPageIndex pageSize:(int)aPageSize;

/**  @brief  幼儿园学生信息 */
- (void)kindergartenPupilInfo;

/**  @brief  幼儿园食谱 */
- (void)kindergartenRecipes;

/**  @brief  幼儿园课程表 */
- (void)kindergartenTimetables;

@end
